#ifndef PLANE_WAR_H__
#define PLANE_WAR_H__

/* 初始化子弹 */
static void init_bullets(void);
/* 初始化敌机 */
static void init_enemies(void);
/* 发射子弹 */
static void fire_bullet(void);
/* 生成敌机 */
static void spawn_enemy(void);
/* 检查碰撞 */
static bool check_collision(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2);
/* 更新游戏状态 */
static void update_game(lv_timer_t *timer);
/* 重置游戏状态（用于重新开始） */
static void reset_game(bool is_return_to_main);
/* 触摸事件处理 */
static void touch_handler(lv_event_t *e);
/* 自动发射子弹的定时器回调 */
static void auto_fire_timer(lv_timer_t *timer);
/* 初始化游戏 */
void plane_war_init(void);

// 4个核心工具函数，负责文件读写、分数排序和去重（避免重复存储相同分数）、刷新排名列表
/* 工具函数1：读取本地排名文件，返回分数数组（已排序，降序）和实际分数个数 */
static int read_rank_file(int scores[], int max_count);
/* 工具函数2：将排序后的前N个分数写入本地文件 */
static void write_rank_file(int scores[], int count);
/* 工具函数3：游戏结束时，将当前分数加入排名并更新文件 */
static void add_score_to_rank(int current_score);
/* 工具函数4：刷新排名列表（从文件读取最新排名并显示） */
static void refresh_rank_list(void);
/* 排名窗口返回按钮回调 */
static void rank_back_handler(lv_event_t *e);
/* 查看排名按钮回调：显示排名窗口前先刷新最新数据 */
static void rank_btn_handler(lv_event_t *e);
/* 创建排名窗口 */
static void create_rank_window(void);
static void update_difficulty(void);



#endif